/*********************************************************************************************/
【*】程序简介

-工程名称：EXTI——外部中断
-实验平台: 野火STM32 霸道 开发板 

【 ！】功能简介：

使用按键产生中断，执行中断服务函数，控制对应的LED灯的亮灭
其中，KEY 1 为上升沿触发，KEY 2 为下降沿触发


【 ！】实验操作：
编译并下载程序到开发板，复位后有此现象：
按下KEY 1 时，红灯亮起，再按一次，红灯熄灭；
按下KEY 2 后松手时，绿灯亮起，再次按下松手时，绿灯熄灭。

/*********************************************************************************************/


【*】 引脚分配

LED灯：

	LED_R<-----> PB5
	LED_G<-----> PB0
	LED_B<-----> PB1（本实验未使用）

	对应引脚低电平则LED灯亮

按键：

	SW1	<-----> PA0
	SW2	<-----> PC13


 * 对于霸道V2板，在实验中，请不要拔掉旁边J73对应盖好的黄色跳帽，这样会导致LED失去3V3的电源而不能工作。



/*********************************************************************************************/


【*】程序描述：

< bsp_exti.h >

	1.宏定义按键对应的GPIO端口、GPIO时钟、GPIO引脚
	2.宏定义EXTI中断事件线输入源的AFIO 时钟、端口、引脚，
	  定义其对应的具体中断事件线编号
	3.宏定义我们的按键中断函数为对应的EXTI中断函数



< bsp_exti.c >

- 配置NVIC（中断配置固件库）

	1.引用结构体
	2.配置NVIC的优先级分组
	3.配置中断源、抢占优先级、子优先级
	4.使能中断通道
	5.初始化NVIC

- 配置EXTI

	1.引用GPIO和EXTI结构体
	2.开启GPIO和APIO时钟（已在对应头文件引入）
	3.调用NVIC配置函数
	4.配置按键要用到的GPIO及GPIO的模式，并初始化GPIO
	5.指定EXTI的信号源，配置其端口和引脚
	6.配置具体中断事件线、EXTI模式、触发类型，并使能中断
	7.初始化EXTI



< stm32f10x_it.c >           --------这里是为了方便管理，统一存放我们的中断服务函数的文件--------


	1.获取 EXTI 的中断标志位状态，若发生中断则转变LED灯当前状态
	2.清除中断标志位

	（已宏定义KEYx_IRQHandler为启动文件中的EXTIx_IRQHandler）



< main.c >

	1.初始化LED端口
	2.调用我们的按键EXTI配置函数
	3.设置死循环，等待中断发生

	PS：其中调用的LED函数与之前的《使用固件库点亮LED灯》一致，这里不再过多赘述



/*********************************************************************************************/

【*】 联系我们

-野火官网  :https://embedfire.com
-野火论坛  :http://www.firebbs.cn
-野火商城  :https://yehuosm.tmall.com/
-野火资料下载中心：http://doc.embedfire.com/products/link

/*********************************************************************************************/